home *** CD-ROM | disk | FTP | other *** search
/ Aminet 12 / Aminet 12 (1996)(GTI - Schatztruhe)[!][Jun 1996].iso / Aminet / text / hyper / rdag2html.lha / RDHTML2AG < prev   
Encoding:
Text File  |  1996-04-15  |  3.7 KB  |  157 lines

  1.  
  2. /*
  3.     RexxDoesHTML2AmigaGuide V0.9 written at 14 Apr 1996 by Michael Ranner
  4.     This piece of code is Public Domain. Use it, distribute it, modify it!
  5. */
  6.  
  7. arg src opt
  8.  
  9. if index(opt, '?') ~= 0 then do
  10.     say 'Source/A'
  11.     exit
  12. end
  13.  
  14. open('HTML', src, 'R')
  15. name = left(src, lastpos('.', src)) || 'guide'
  16. open('Guide', name,'W')
  17.  
  18. writeln('Guide', '@DATABASE ' || src)
  19. writeln('Guide', '@REMARK Converted by RexxDoesHTML2AmigaGuide V1.0 by Michael Ranner')
  20. writeln('Guide', '@NODE Main')
  21. writeln('Guide', '@WORDWRAP')
  22.  
  23. spaces = 0;
  24. pushes = 0;
  25.  
  26. do until eof('HTML') = 1
  27.     srcline = readln('HTML')
  28.     dstline = ''
  29.  
  30.     do while srcline ~= ''
  31.  
  32.         parse var srcline start '<' token arg'>' srcline
  33.         token = compress(upper(token))
  34.  
  35.         select
  36.  
  37.             when token = '/TITLE' then nop
  38.  
  39.             when token = 'P' then dstline = dstline || start || '0A0A'X
  40.  
  41.             when token = 'H1' | token = 'H2' then dstline = '0A0A'X || dstline || start
  42.  
  43.             when token = '/H1' | token = '/H2' then dstline = dstline || start || '0A0A'X
  44.  
  45.             when token = 'H3' | token = 'H5' then dstline = '0A'X || '@{i}' || dstline || start
  46.  
  47.             when token = '/H3' | token = '/H5' then dstline = dstline || start || '@{ui}' || '0A'X
  48.  
  49.             when token = 'H4' | token = 'H6' then dstline = '0A'X || dstline || start
  50.  
  51.             when token = '/H4' | token = '/H6' then dstline = dstline || start || '0A'X
  52.  
  53.             when token = 'LI' then dstline = dstline || start || '0A'X || '*  '
  54.  
  55.             when token = 'UL' then do
  56.                 spaces = spaces + 6
  57.                 dstline = dstline || start || '0A'X || '@{LINDENT ' || spaces || '}' || '0A'X
  58.             end
  59.  
  60.             when token = '/UL' then do
  61.                 spaces = spaces - 6
  62.                 dstline = dstline || start || '0A'X || '@{LINDENT ' || spaces || '}' || '0A'X
  63.             end
  64.  
  65.             when token = 'I' then dstline = dstline || start || '@{I}'
  66.             when token = '/I' then dstline = dstline || start || '@{UI}'
  67.             when token = 'B' then dstline = dstline || start || '@{B}'
  68.             when token = '/B' then dstline = dstline || start || '@{UB}'
  69.  
  70.             when token = 'A' then do
  71.                 parse var arg token '=' node
  72.                 token = compress(upper(token))
  73.                 node = compress(node, '"')
  74.  
  75.                 if (token = 'HREF') & (node ~='') then do
  76.                     prot = upper(left(node, pos(':', node)))
  77.  
  78.                     say prot
  79.  
  80.                     select
  81.  
  82.                         when prot = 'HTTP:' then do
  83.                             node = pushNode(node)
  84.                         end
  85.  
  86.                         when prot = 'GOPHER:' then do
  87.                             node = pushNode(node)
  88.                         end
  89.  
  90.                         when prot = 'FTP:' then do
  91.                             node = pushNode(node)
  92.                         end
  93.  
  94.                         when prot = 'WAIS:' then do
  95.                             node = pushNode(node)
  96.                         end
  97.  
  98.                         when prot = 'NEWS:' then do
  99.                             node = pushNode(node)
  100.                         end
  101.  
  102.                         when prot = 'MAILTO:' then do
  103.                             node = pushNode(node)
  104.                         end
  105.  
  106.                         when prot = 'LOCALHOST:' then do
  107.                             node = left(node, lastpos('.', node)) || 'guide/MAIN'
  108.                             node = delstr(node, 1, lastpos('://', node) + 2)
  109.                         end
  110.                         
  111.                         otherwise node = left(node, lastpos('.', node)) || 'guide/MAIN'
  112.  
  113.                     end
  114.  
  115.                     dstline = dstline || start || '@{"'
  116.                 end
  117.             end
  118.  
  119.             when token = '/A' then dstline = dstline || start || '" LINK ' || node || '}'
  120.  
  121.             when token = 'IMG' then do
  122.                 parse var arg token '=' name token2 '=' alttext
  123.                 alttext = compress(alttext, '"')
  124.  
  125.                 if alttext ~= '' then dstline = dstline || start || '[' || alttext || ']'
  126.                 else dstline = dstline || start || '[Image]'
  127.             end
  128.  
  129.             otherwise dstline = dstline || start
  130.         end
  131.     end
  132.  
  133.     writech('Guide', dstline)
  134.  
  135. end
  136.  
  137. writeln('Guide', '0A0A'X || 'Converted at ' || date() || ' with RexxDoesHTML2AmigaGuide by Michael Ranner.' || '0A0A'X)
  138. writeln('Guide', '@ENDNODE')
  139.  
  140. do while pushes ~= 0
  141.     parse pull node
  142.     writeln('Guide', '@NODE ' || translate(node, '__', ':/') || '0A0A'X || node || '0A0A'X || @ENDNODE)
  143.     pushes = pushes - 1
  144. end
  145.  
  146. close('Guide')
  147. close('HTML')
  148.  
  149. exit
  150.  
  151. pushNode: procedure expose pushes
  152.     parse arg node
  153.     push node
  154.     pushes = pushes + 1
  155.     node = translate(node, '__', ':/')
  156.     return node
  157.